Skip to content

Update ERC-8048: Make the metadata authority collection-wide - #2174

Merged
eip-review-bot merged 9 commits into
ethereum:masterfrom
nxt3d:erc-8048-collection-authority
Nov 14, 2026
Merged

eip-review-bot merged 9 commits into
ethereum:masterfrom
nxt3d:erc-8048-collection-authority

Conversation

@nxt3d

@nxt3d nxt3d commented Nov 14, 2026 •

Copy link
Copy Markdown
Contributor

Makes the optional Metadata Authority extension collection-wide, with the smallest change to the current text.

  • metadataAuthority(uint256 tokenId) becomes tokenMetadataAuthority(), and MetadataAuthoritySet(uint256 tokenId, address authority) becomes TokenMetadataAuthoritySet(address authority). The interface is now IERC8048TokenMetadataAuthority, with interface ID 0x04f90b41 in place of 0xf9cb127d.
  • One authority covers every token in the collection. A per-token authority needs one event for every token when a collection changes its authority. When different parties, including holders, need to write different keys, they write through a policy contract set as the authority.
  • The event is emitted whenever the address tokenMetadataAuthority() returns changes, including a change that comes from something else, such as an ownership transfer when the authority follows the owner, and at deployment when the authority starts nonzero.
  • The reference implementation makes the collection owner the authority by default, follows ownership changes, and has an example setter that hands the authority to another address, such as a policy contract.
  • Adds one Security Considerations point, a contract set as the authority can be replaced unless the implementation prevents it.

The name tokenMetadataAuthority() follows tokenURI and keeps the extension apart from ERC-8049's contract-level metadataAuthority(). The core IERC8048Metadata interface and its interface ID, 0xdf670be1, do not change. ERC-8049 is not changed.

…ection authority

Remove the optional Metadata Authority extension and every reference to it. Add the optional Collection Authority extension, with collectionAuthority(), the CollectionAuthorityUpdated event and ERC-165 interface ID 0x2d2a6041. Rewrite the house example around a policy contract set as the collection authority, add common setups, a reference implementation, a Rationale paragraph and Security Considerations.
Remove holderCanWrite from the Collection Authority extension, so collectionAuthority() returns the authority and the lock, and CollectionAuthorityUpdated carries the same two values. Add the optional Holder Metadata extension, with canHolderUpdateMetadata(), the HolderCanUpdateMetadataSet event and ERC-165 interface ID 0x12c220bd. Add the rules for a contract that implements both extensions, and update the common setups, the house example, the reference implementation, the Rationale and the Security Considerations.
collectionAuthority() returns the authority alone and CollectionAuthorityUpdated carries the authority alone. Remove authorityLocked and every rule about who can change the authority or the holder flag from the Specification, and say that both are up to the implementation. Keep the lock in the reference implementation as an example, move the common setups table next to it, and adjust the house example, the Rationale and the Security Considerations.
Add one sentence to the Marketplace compatibility paragraph of the agent profile, telling clients to read canHolderUpdateMetadata() and collectionAuthority().
Replace the Holder writes text. A true flag now warns that an account that holds a token, or that a holder approved, can write its metadata. For ERC-721 the owner must be able to write, and approved addresses and operators are allowed. Make the Collection Authority exception, the rules for contracts with both extensions, the Rationale, the Security Considerations and the reference implementation comments consistent with it.
@eip-review-bot

eip-review-bot commented Nov 14, 2026 •

Copy link
Copy Markdown
Collaborator

✅ All reviewers have approved.

@eip-review-bot
eip-review-bot enabled auto-merge (squash) November 14, 2026 00:27
eip-review-bot
eip-review-bot previously approved these changes Nov 14, 2026

@eip-review-bot eip-review-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All Reviewers Have Approved; Performing Automatic Merge...

@nxt3d
nxt3d marked this pull request as draft November 14, 2026 00:30
auto-merge was automatically disabled November 14, 2026 00:30

Pull request was converted to draft

Replace the Holder writes text. canHolderUpdateMetadata() now states the default for holders, and a collection authority can open holder writes while it is false or restrict them while it is true. Remove the rule that the ERC-721 owner must be able to write. Make the Collection Authority exception, the rules for contracts with both extensions, the Rationale, the Security Considerations and a reference implementation comment consistent with it.
Remove the Holder Metadata extension and the section for contracts that implement both extensions. With a nonzero collection authority only the authority can write, with no exception, and holder writes are left to implementations. Move the house example under the Collection Authority extension, point the Marketplace compatibility sentence to collectionAuthority() only, and shorten the Rationale, the Security Considerations and the reference implementation to match.
… smallest change

Return to the upstream Optional Metadata Authority Extension and change only what makes it collection wide. The read is tokenMetadataAuthority(), the event is TokenMetadataAuthoritySet(address), the interface is IERC8048TokenMetadataAuthority and the ERC-165 ID is 0x04f90b41. A nonzero authority is the only address that can write, for every token. Remove the Collection Authority extension, the setups table and the lock added earlier on this branch. The reference implementation makes the collection owner the authority by default.
@nxt3d nxt3d changed the title Update ERC-8048: Replace the per-token authority with Collection Authority and Holder Metadata extensions Update ERC-8048: Make the metadata authority collection-wide Nov 14, 2026
@nxt3d
nxt3d marked this pull request as ready for review November 14, 2026 01:12
@eip-review-bot
eip-review-bot enabled auto-merge (squash) November 14, 2026 01:13

@eip-review-bot eip-review-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All Reviewers Have Approved; Performing Automatic Merge...

@eip-review-bot
eip-review-bot merged commit ae65e89 into ethereum:master Nov 14, 2026
9 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants